﻿using MvcApplication3.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace CasaElectronica.Controllers
{
    public enum Categoria
    {
        Portatiles, Consolas, Celulares, Televisores, Reproductores
    }

    public class ElectroController : Controller
    {
        //
        // GET: /Electro/

        private static List<Items> lista = new List<Items>();
        private static List<Items> changuito = new List<Items>();
        private static List<Items> listaCategoria = new List<Items>();
        bool primer = true;

        public ActionResult Cargar()
        {
            if (primer = true)
            {
                lista.Add(new Items(nombre: "PS3 500Gb", precio: 3200, cantidad: 7, categoria: Categoria.Consolas));
                lista.Add(new Items(nombre: "XBOX-360 250Gb", precio: 2600, cantidad: 5, categoria: Categoria.Consolas));
                lista.Add(new Items(nombre: "Alienware X-24", precio: 15000, cantidad: 5, categoria: Categoria.Portatiles));
                lista.Add(new Items(nombre: "Alienware T-1000", precio: 28000, cantidad: 2, categoria: Categoria.Portatiles));
                lista.Add(new Items(nombre: "SamsungTv 40", precio: 2500, cantidad: 10, categoria: Categoria.Televisores));
                lista.Add(new Items(nombre: "PhillipsTv 43", precio: 2900, cantidad: 5, categoria: Categoria.Televisores));
                lista.Add(new Items(nombre: "IPhone S5", precio: 6000, cantidad: 12, categoria: Categoria.Celulares));
                lista.Add(new Items(nombre: "SonyEricsson W980", precio: 1200, cantidad: 13, categoria: Categoria.Celulares));
                lista.Add(new Items(nombre: "Reproductor Mp3", precio: 190, cantidad: 24, categoria: Categoria.Reproductores));
                lista.Add(new Items(nombre: "Reproductor Mp4", precio: 230, cantidad: 19, categoria: Categoria.Reproductores));
                primer = false;
            }

           return Redirect("Index");
        }

        public ActionResult Index()
        {

            return View(model: lista);
        }

        public ActionResult Borrar(Int16 pos)
        {
            lista.RemoveAt(pos);
            return RedirectToAction("ABM");
        }

        public ActionResult ABM()
        {
            return View(model: lista);
        }

        public ActionResult Home()
        {
            return RedirectToAction("Index");
        }

        public ActionResult Changuito()
        {
            return View(model: lista);
        }

        public ActionResult Agregar(String nombre, float precio, Int32 cantidad, Categoria categoria)
        {
           lista.Add(
            new Items(cantidad: cantidad,
                      nombre: nombre,
                      precio: precio,
                      categoria: categoria));
            return RedirectToAction("ABM");
        }

        [HttpGet]
        public ActionResult Modificar(Int16 pos)
        {
            var m = lista[pos];
            ViewBag.pos = pos;
            return View(m);

        }

        [HttpPost]
        public ActionResult Modificar(String nombre, float precio, Int32 cantidad, Int16 pos, Categoria categoria)
        {
            var m = lista[pos];
            m.cantidad = cantidad;
            m.nombre = nombre;
            m.precio = precio;
            m.categoria = categoria;
            return RedirectToAction("ABM");
        }

        public ActionResult ChanguitoAgregar(Int16 pos, Int32 cantidad)
        {
            bool modif = false;
            lista[pos].cantidad = lista[pos].cantidad - cantidad;
            foreach (var i in changuito)
            {
                if (string.Compare(i.nombre, lista[pos].nombre) == 0)
                {
                    i.cantidad = i.cantidad + cantidad;
                    modif = true;
                }
            }
            if (modif == false)
            {
                changuito.Add(
                        new Items(nombre: lista[pos].nombre,
                                  precio: lista[pos].precio,
                                  cantidad: cantidad,
                                  categoria: lista[pos].categoria));
            }
            return RedirectToAction("Changuito");
        }

        public ActionResult MostrarChanguito()
        {
            return View(model: changuito);
        }

        public ActionResult Ordenar(Categoria categoria)
        {
            listaCategoria.Clear();
            foreach (var item in lista)
            {
                if (item.categoria == categoria)
                {
                    listaCategoria.Add(new Items(nombre: item.nombre, precio: item.precio, cantidad: item.cantidad, categoria: categoria));
                }
            }
            return View("Index", model: listaCategoria);
        }
    }
}
